package jetpack.com.pzl.architecture.room;

import android.graphics.Bitmap;

import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Embedded;
import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.room.PrimaryKey;

//默认情况下，Room 将类名称用作数据库表名称。如果您希望表具有不同的名称 @Entity(tableName = "users")
//SQLite 中的表名称不区分大小写
@Entity
public class User {

    @PrimaryKey
    public int uid;

    @ColumnInfo(name = "first_name")
    public String firstName;

    @ColumnInfo(name = "last_name")
    public String lastName;

    //默认情况下，Room 会为实体中定义的每个字段创建一个列。如果某个实体中有您不想保留的字段，则可以使用 @Ignore
    @Ignore
    Bitmap picture;

    //使用 @Embedded 注释表示要分解为表格中的子字段的对象。
    //定义对象之间的关系,创建嵌套对象 , 表示 User 对象的表将包含具有以下名称的列：uid、firstName、lastName、street、state、city 和 post_code。
    //如果某个实体具有相同类型的多个嵌套字段，您可以通过设置 prefix 属性确保每个列的唯一性。然后，Room 会将提供的值添加到嵌套对象中每个列名称的开头。
    @Embedded
    public Address address;


    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", firstName='" + firstName + '\'' +
                ", lastName='" + lastName + '\'' +
                ", picture=" + picture +
                ", address=" + address +
                '}';
    }
}